昨天我們學會了安裝ta-lib的方法,今天我們來看看如何用shioaji搭配Ta-Lib計算技術指標吧。
首先可以用以下程式碼查看TA-Lib所有技術指標的代號,
import talib
talib.get_functions() # 查看TA-Lib所有技術指標的代號
搭配ta-lib 官方文件https://mrjbq7.github.io/ta-lib/doc_index.html, 就可以知道每個技術指標的定義與使用方式。
或是用以下程式碼也可以直接查看各個技術指標的用法
talib.SMA?
以下示範如何用要shioaji搭配Ta-Lib計算SMA(簡單移動平均線)。
計算技術指標基本上一定會用到K棒,可以用以下方式從shioaji取得1分K,
import shioaji as sj
api = sj.Shioaji(simulation=True)
api.login( #登入模擬帳號
person_id="PAPIUSER02",
passwd="2222",
contracts_cb=print,
)
import pandas as pd
kbars = api.kbars(api.Contracts.Stocks["2330"], start="2021-09-27", end="2021-09-27") #取得2330在2021-09-27的1分K
df = pd.DataFrame({**kbars}) #將資料格式轉成dataframe
df.ts = pd.to_datetime(df.ts)
df.head(5)
Low | High | Volume | ts | Close | Open | Amount | |
---|---|---|---|---|---|---|---|
0 | 597 | 600 | 1751 | 2021-09-27 09:01:00 | 597 | 600 | 1.05026e+09 |
1 | 596 | 598 | 131 | 2021-09-27 09:02:00 | 596 | 597 | 7.8192e+07 |
2 | 596 | 597 | 91 | 2021-09-27 09:03:00 | 596 | 596 | 5.4257e+07 |
3 | 594 | 596 | 223 | 2021-09-27 09:04:00 | 594 | 596 | 1.32744e+08 |
4 | 593 | 595 | 250 | 2021-09-27 09:05:00 | 594 | 594 | 1.48505e+08 |
而1分K的計算只需用到收盤價,因此從一分K的dataframe取出收盤價
df['Close']
然後將收盤價丟入talib.SMA中,timeperiod設定為5,即可計算出一分K的5MA
talib.SMA(df['Close'],5)
0 | |
---|---|
0 | nan |
1 | nan |
2 | nan |
3 | nan |
4 | 595.4 |
5 | 594.8 |
6 | 594.6 |
7 | 594.2 |
8 | 594.4 |
9 | 595.2 |
今天學會了如何用talib進行指標運算,明天將介紹如何在盤中即時計算技術指標,且當技術指標達到我們的要求時,自動送出通知到line裡。